From b8620de2f16654f478d5a0d5283aa4541b1fdb5f Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Fri, 9 Nov 2007 12:08:37 +0000 Subject: [PATCH] svm: Intercept and disallow MONITOR/MWAIT. Signed-off-by: Keir Fraser --- xen/arch/x86/hvm/svm/svm.c | 3 ++- xen/arch/x86/hvm/svm/vmcb.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 2e0c98a978..32d99c25fb 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -2280,13 +2280,14 @@ asmlinkage void svm_vmexit_handler(struct cpu_user_regs *regs) hvm_triple_fault(); break; + case VMEXIT_MONITOR: + case VMEXIT_MWAIT: case VMEXIT_VMRUN: case VMEXIT_VMLOAD: case VMEXIT_VMSAVE: case VMEXIT_STGI: case VMEXIT_CLGI: case VMEXIT_SKINIT: - /* Report "Invalid opcode" on any VM-operation except VMMCALL */ svm_inject_exception(v, TRAP_invalid_op, 0, 0); break; diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c index f7c59b604e..2332581ed6 100644 --- a/xen/arch/x86/hvm/svm/vmcb.c +++ b/xen/arch/x86/hvm/svm/vmcb.c @@ -128,7 +128,8 @@ static int construct_vmcb(struct vcpu *v) GENERAL2_INTERCEPT_VMLOAD | GENERAL2_INTERCEPT_VMSAVE | GENERAL2_INTERCEPT_STGI | GENERAL2_INTERCEPT_CLGI | GENERAL2_INTERCEPT_SKINIT | GENERAL2_INTERCEPT_RDTSCP | - GENERAL2_INTERCEPT_WBINVD; + GENERAL2_INTERCEPT_WBINVD | GENERAL2_INTERCEPT_MONITOR | + GENERAL2_INTERCEPT_MWAIT; /* Intercept all debug-register writes. */ vmcb->dr_intercepts = ~0u; -- 2.30.2